package org.ehe.common.core.constant;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.HashMap;

/**
 * @author :zhangnn
 * @className :RoleKeyConstants
 * @description: 角色权限常量定义
 * @date 2025-11-04 10:52:28
 */
public class RoleKeyConstants {
    // 超级管理员（对应登录返回的"superadmin"，根据实际场景调整）
    public static final String SUPER_ADMIN = "superadmin";
    // HR管理员（假设角色key为"hrAdmin"，需与实际系统一致）
    public static final String HR_ADMIN = "hrAdmin";
    // HR普通员工
    public static final String HR_COMMON = "hrCommon";
    // 采购管理员
    public static final String PURCHASE_ADMIN = "purchaseAdmin";
    // 质检管理员
    public static final String QUALITY_ADMIN = "qualityAdmin";


    // 管理员角色列表，拥有所有数据访问权限
    public static final List<String> ADMIN_ROLES = Arrays.asList(SUPER_ADMIN);

    // HR相关角色列表
    public static final List<String> HR_ROLES = Arrays.asList(SUPER_ADMIN,HR_ADMIN, HR_COMMON);

    // 采购相关角色列表
    public static final List<String> PURCHASE_ROLES = Arrays.asList(SUPER_ADMIN,PURCHASE_ADMIN);

    // 质检相关角色列表
    public static final List<String> QUALITY_ROLES = Arrays.asList(SUPER_ADMIN,QUALITY_ADMIN);


    /**
     * 检查角色是否为管理员角色
     *
     * @param roleKey 角色key
     * @return 是否为管理员角色
     */
    public static boolean isAdminRole(String roleKey) {
        return ADMIN_ROLES.contains(roleKey);
    }

    /**
     * 检查角色是否为HR相关角色
     *
     * @param roleKey 角色key
     * @return 是否为HR相关角色
     */
    public static boolean isHrRole(String roleKey) {
        return HR_ROLES.contains(roleKey);
    }

    /**
     * 检查角色是否为采购相关角色
     *
     * @param roleKey 角色key
     * @return 是否为采购相关角色
     */
    public static boolean isPurchaseRole(String roleKey) {
        return PURCHASE_ROLES.contains(roleKey);
    }

    /**
     * 检查角色是否为质检相关角色
     *
     * @param roleKey 角色key
     * @return 是否为质检相关角色
     */
    public static boolean isQualityRole(String roleKey) {
        return QUALITY_ROLES.contains(roleKey);
    }

    /**
     * 获取所有管理员角色
     *
     * @return 管理员角色列表
     */
    public static List<String> getAdminRoles() {
        return ADMIN_ROLES;
    }

    /**
     * 获取所有HR相关角色
     *
     * @return HR相关角色列表
     */
    public static List<String> getHrRoles() {
        return HR_ROLES;
    }

    /**
     * 获取所有采购相关角色
     *
     * @return 采购相关角色列表
     */
    public static List<String> getPurchaseRoles() {
        return PURCHASE_ROLES;
    }

    /**
     * 获取所有质检相关角色
     *
     * @return 质检相关角色列表
     */
    public static List<String> getQualityRoles() {
        return QUALITY_ROLES;
    }
}
